Verifying networks with symbolic execution and temporal logic
نویسندگان
چکیده
1 VERIFYING NETWORKS WITH SYMBOLIC EXECUTION Symbolic execution is a promising approach to network veri cation [5, 6]. Inspired from software veri cation where it is mainly used to generate test-cases (e.g. [1]), symbolic execution is a technique for exploring all viable execution paths of a program. Symbolic execution runs programs with symbolic inputs instead of concrete ones. Such an input models all possible values in it’s range. When executing conditional instructions, program execution is branched. In the case of an if statement, both the then and the else branches of the program will be explored, and the condition (resp. its complement) will be added as a constraint on each execution path. Adding constraints to a symbolic variable will restrict the values in its range. Constraints are added during branching as well as when executing other non-branching instructions (e.g. assignment). If constraints are unsatis able on a program branch, execution stops on that branch. The output of symbolic execution consists of all satis ed execution branches and for each branch — the set of constraints on each variable. To deploy symbolic execution for verifying networks, the topology is interpreted as a single program whose input is a symbolic packet (i.e. a packet having possibly symbolic header elds). The execution paths of such a program correspond to the set of all possible paths the packet may take through the network. Symnet [6] takes on this approach. Symnet is a symbolic execution engine which runs on SEFL (Symbolic Execution Friendly Language) programs. SEFL is a minimalist imperative language speci cally designed for: (i) modelling network processing and (ii) fast symbolic execution. To verify a network topology, each of its components (and the topology itself) are translated to SEFL code. Symnet is fast and can check large-scale networks (e.g. the Stanford backbone) in seconds.
منابع مشابه
Verifying concurrent systems with symbolic execution: temporal reasoning is symbolic execution with a little induction
Symbolic execution is an intuitive strategy to verify sequential programs, which can be automated to a large extent. We have successfully carried over this method of proof to the interactive verification of concurrent systems. The resulting strategy can be applied to the verification of complex parallel programs and arbitrary (linear) temporal formulas. Our underlying logic is defined such that...
متن کاملVerifying Concurrent Systems with Symbolic Execution
Current techniques for interactively proving temporal properties of concurrent systems translate transition systems into temporal formulas by introducing program counter variables. Proofs are not intuitive, because control flow is not explicitly considered. For sequential programs symbolic execution is a very intuitive, interactive proof strategy. In this paper we will adopt this technique for ...
متن کاملFormal Veri cation by Symbolic Evaluation of Partially - OrderedTrajectories
Symbolic trajectory evaluation provides a means to formally verify properties of a sequential system by a modiied form of symbolic simulation. The desired system properties are expressed in a notation combining Boolean expressions and the temporal logic \next-time" operator. In its simplest form, each property is expressed as an assertion A =) C], where the antecedent A expresses some assumed c...
متن کاملFormal Veriication by Symbolic Evaluation of Partially-ordered Trajectories
Symbolic trajectory evaluation provides a means to formally verify properties of a sequential system by a modiied form of symbolic simulation. The desired system properties are expressed in a notation combining Boolean expressions and the temporal logic \next-time" operator. In its simplest form, each property is expressed as an assertion A =) C], where the antecedent A expresses some assumed c...
متن کاملModel Checking MSVL Programs Based on Dynamic Symbolic Execution
In this paper, we propose a DSE based model checking approach (DSE-MC) for verifying programs written in Modelling, Simulation and Verification Language (MSVL) [1,3]. For doing so, we adopt a DSE method to execute an MSVL program to generate a symbolic execution tree (SEtree) which is used as the abstract model of the program. Further, a property to be verified is specified by a Propositional P...
متن کامل